﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Boggle
{
    /// <summary>
    /// Represents a dictionary which can be used to look up Boggle words.
    /// </summary>
	public interface IBoggleDictionary
	{
        /// <summary>
        /// Gets the name of the dictionary.
        /// </summary>
        String Name { get; }

        /// <summary>
        /// Gets a description of the dictionary.
        /// </summary>
        String Description { get; }

        /// <summary>
        /// Gets whether or not the Define method is supported. If not, IsWord must be used.
        /// </summary>
        Boolean IsDefineSupported { get; }

        /// <summary>
        /// Determines whether or not the supplied string is a word.
        /// </summary>
        /// <param name="word">The string to check.</param>
        /// <returns>True if the string is a word, false otherwise.</returns>
        Boolean IsWord(String word);

        /// <summary>
        /// Returns a list of definitions for the supplied string. If the supplied string
        /// is not a word, null is returned.
        /// </summary>
        /// <param name="word">The string to get definitions for.</param>
        /// <returns>A list of definitions if the string is a word, otherwise null.</returns>
		List<string> Define(String word);
	}
}
